/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Departamento;
import sv.com.intesal.compra.bean.Municipio;
import sv.com.intesal.compra.sql.SQLDepartamento;
import sv.com.intesal.compra.sql.SQLMunicipio;
import sv.com.intesal.conexion.cConexion;

/**
 *
 * @author JM
 */
public class MunicipioControlador {

    public void mantenimiento(Municipio municipio) throws Exception {

        Connection cnn = null;
        PreparedStatement ps = null;
        try {

            cnn = cConexion.conectar();

            if (municipio.getId_mu() == null) {
                ps = cnn.prepareStatement(SQLMunicipio.INSERT);
            } else {
                ps = cnn.prepareStatement(SQLMunicipio.MODIFICAR);
                ps.setInt(3, municipio.getId_mu());
            }
            ps.setInt(1, municipio.getId_d());
            ps.setString(2, municipio.getNombre_mu());
            ps.executeUpdate();


            Mensaje m = new Mensaje();
            if (municipio.getId_mu() == 0) {
                m.messageInfo(m.getIinformation());
            } else {
                m.messageInfo(m.getImodificada());
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<Municipio> fillGrid() throws Exception {
        List<Municipio> lista = new ArrayList<Municipio>();
        ResultSet rs = null;
        try {
            rs = cConexion.conectar().createStatement().executeQuery(SQLMunicipio.ListaMunicipio);
            while (rs.next()) {
                Municipio m = new Municipio();

                /*DEPARTAMENTO*/
                m.setId_d(rs.getInt("id_d"));
                m.setId_d2(rs.getInt("id_d"));
                m.setNombre_d(rs.getString("nombre_d"));

                /*MUNICIPIO*/
                m.setId_mu(rs.getInt("id_mu"));
                m.setId_mu2(rs.getInt("id_mu"));
                m.setNombre_mu(rs.getString("nombre_mu"));

                /*PAIS*/
                m.setId_p(rs.getInt("id_p"));
                m.setId_p2(rs.getInt("id_p"));
                m.setNombre_p(rs.getString("nombre_p"));
                lista.add(m);
            }
            rs.close();
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<Departamento> getDepartamentos_x_Pais(Integer codigo_p) throws Exception {
        List<Departamento> list = new ArrayList<Departamento>();
        Connection cnn;
        PreparedStatement ps;
        ResultSet rs;
        try {

            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLDepartamento.getDepartamentos_x_Pais);
            ps.setInt(1, codigo_p);
            rs = ps.executeQuery();

            while (rs.next()) {
                Departamento d = new Departamento();
                d.setId_d(rs.getInt("id_d"));
                d.setId_p(rs.getInt("id_p"));
                d.setNombre_d(rs.getString("nombre_d"));
                d.setNombre_p(rs.getString("nombre_p"));
                list.add(d);
            }
            ps.close();
            cnn.close();
            rs.close();
            return list;
        } catch (Exception ex) {
            throw new Exception(ex);
        }

    }

    public List<Municipio> getMunicipio_x_Departamento(Integer codigo_d) throws Exception {
        List<Municipio> list = new ArrayList<Municipio>();
        Connection cnn;
        PreparedStatement ps;
        ResultSet rs;
        try {

            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLMunicipio.getMunicipio_x_Departamento);
            ps.setInt(1, codigo_d);
            rs = ps.executeQuery();

            while (rs.next()) {
                Municipio mu = new Municipio();
                mu.setId_d(rs.getInt("id_d"));
                mu.setNombre_d(rs.getString("nombre_d"));

                mu.setId_mu(rs.getInt("id_mu"));
                mu.setNombre_mu(rs.getString("nombre_mu"));

                mu.setId_p(rs.getInt("id_p"));
                mu.setNombre_p(rs.getString("nombre_p"));

                list.add(mu);
            }
            ps.close();
            cnn.close();
            rs.close();
            return list;
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }
}
